///**
// * 
// */
//package com.sig.xmlconfg;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//
//import javax.xml.parsers.ParserConfigurationException;
//import javax.xml.parsers.SAXParser;
//import javax.xml.parsers.SAXParserFactory;
//
//import org.xml.sax.Attributes;
//import org.xml.sax.SAXException;
//import org.xml.sax.helpers.DefaultHandler;
//
//import android.util.Log;
//
//import com.sig.models.Bounds;
//import com.sig.models.Noeud;
//import com.sig.models.Segment;
//
///**
// * @author zou
// *
// */
//public class ConfigXML extends DefaultHandler implements IConfigXML{
//	
//	private Segment segment;
//	private Noeud node,nodeInSegment;
//	private Bounds bounds=new Bounds();
//	private List<Noeud> listeNodeInSegment;
//	private List<Noeud> listeNodeXML=new ArrayList<Noeud>();
//	private List<Segment> listeSegmentXML=new ArrayList<Segment>();
//	private boolean inOSM,inBounds,inTag,inNode,inWay,inND,inRelation,inMember;
//	
//	public static final String BALISE_OSM="osm";
//	public static final String BALISE_BOUNDS="bounds";
//	public static final String BALISE_TAG="tag";
//	public static final String BALISE_RELATION="relation";
//	public static final String BALISE_MEMBER="member";
//	
//	public ConfigXML(){
//	
//	}
//	
//	/**
//	 * Call if begin of tag
//	 */
//	public void startElement(String uri, String localName,
//			String qName, Attributes attributes) throws SAXException{
//			//begin balise osm
//			if(qName.equals(BALISE_OSM)){
//				inOSM=true;				
//			}
//			//begin balise bounds
//			else if(qName.equals(BALISE_BOUNDS)){
//				double minlat=Double.parseDouble(attributes.getValue(Bounds.ATTRIBUTE_BOUNDS_MINLAT));
//				double minlon=Double.parseDouble(attributes.getValue(Bounds.ATTRIBUTE_BOUNDS_MINLON));
//				double maxlat=Double.parseDouble(attributes.getValue(Bounds.ATTRIBUTE_BOUNDS_MAXLAT));
//				double maxlon=Double.parseDouble(attributes.getValue(Bounds.ATTRIBUTE_BOUNDS_MINLON));
//				
//				bounds.setMinLat(minlat);
//				bounds.setMinLon(minlon);
//				bounds.setMaxLat(maxlat);
//				bounds.setMaxLon(maxlon);
//			}
//			//begin balise node
//			else if(qName.equals(Noeud.BALISE_NODE)){
//				node=new Noeud();
//				try{
//					//Get all attributes
//					double id=Double.parseDouble(attributes.getValue(Noeud.ATTRIBUTE_NODE_ID));
//					double uid=Double.parseDouble(attributes.getValue(Noeud.ATTRIBUTE_NODE_UID));
//					double lat=Double.parseDouble(attributes.getValue(Noeud.ATTRIBUTE_NODE_LAT));
//					double lon=Double.parseDouble(attributes.getValue(Noeud.ATTRIBUTE_NODE_LON));
//					
//					//make new node
//					node.setId(id);
//					node.setUid(uid);
//					node.setLat(lat);
//					node.setLon(lon);
//					inNode=true;
//				}catch(Exception e){
//					throw new SAXException(e);
//				}
//			}
//			
//			else if(qName.equals(BALISE_TAG)){
//				inTag=true;
//			}
//			
//			//begin balise way
//			else if(qName.equals(Segment.BALISE_WAY)){
//				segment=new Segment();
//				try{
//					inWay=true;
//					//Get all attributes
//					double id=Double.parseDouble(attributes.getValue(Segment.ATTRIBUTE_WAY_ID));
//					double uid=Double.parseDouble(attributes.getValue(Segment.ATTRIBUTE_WAY_UID));
//					
//					//make new segment
//					segment.setId(id);
//					segment.setUid(uid);
//				}catch(Exception e){
//					throw new SAXException(e);
//				}
//				
//			}else if(qName.equals(Noeud.BALISE_ND)){
//				double ref=Double.parseDouble(attributes.getValue(Noeud.ATTRIBUTE_NODE_REF));
//				listeNodeInSegment=new ArrayList<Noeud>();
//				for (Noeud node : listeNodeXML) {
//					if(node.getId()==ref){
//						nodeInSegment=node;
//					}
//				}
//				inND=true;
//			}else if(qName.equals(BALISE_RELATION)){
//				inRelation=true;
//			}else if(qName.equals(BALISE_MEMBER)){
//				inMember=true;
//			}
//	}
//	
//	/**
//	 * Call if end of tag
//	 */
//	public void endElement(String uri, String localName, String qName)
//			throws SAXException{
//		if(qName.equals(BALISE_OSM)){
//			inOSM=false;
//		}
//		else if(qName.equals(Noeud.BALISE_NODE)){
//				listeNodeXML.add(node);
//				Log.d("Node", "Read XML-NODE");
//				inNode=false;			
//		}
//		else if(qName.equals(BALISE_TAG)){
//			inTag=false;
//		}
//		else if(qName.equals(Segment.BALISE_WAY)){
//			listeSegmentXML.add(segment);
//			Log.d("Segment", "Read XML-WAY");
//			inWay=false;
//		}
//		else if(qName.equals(Noeud.BALISE_ND)){
//			listeNodeInSegment.add(nodeInSegment);
//			segment.setListeNode(listeNodeInSegment);
//			Log.d("Nd", "Read XML-ND");
//			inND=false;
//		}
//		else if(qName.equals(BALISE_BOUNDS)){
//			inBounds=false;
//		}
//		else if(qName.equals(BALISE_RELATION)){
//			Log.d("SIZE", ""+listeSegmentXML.size());
//			inRelation=false;
//		}
//		else if(qName.equals(BALISE_MEMBER)){
//			inMember=false;
//		}
//		else{
//			//erreur, on peut lever une exception
//			throw new SAXException("Balise "+qName+" inconnue � traiter si besoin");
//		}  
//	}
//	
//	//d�but du parsing
//		public void startDocument() throws SAXException {
//			Log.d("BEGIN", "chargement");
//		}
//	//fin du parsing
//		public void endDocument() throws SAXException {
//			Log.d("FIN", "chargement");
//		}
//	
//	/**
//	 * @return a node
//	 */
//	public Noeud getNode(double idNode) {
//		Noeud newNode=new Noeud();
//		for(Noeud node: listeNodeXML){			
//			if(node.getId()==idNode){
//				newNode=node;			
//			}
//			break;				
//		}
//		return newNode;
//	}
//
//
//	/**
//	 * @return a Segment
//	 */
//	public Segment getSegment(double idSegment) {
//		Segment newSeg=new Segment();
//		for(Segment seg: listeSegmentXML){			
//			if(node.getId()==idSegment){
//				newSeg=seg;			
//			}
//			break;				
//		}
//		return newSeg;
//	}
//
//
//	/**
//	 * @return a node using latitude and longitude
//	 */
//	public Noeud getNodeByCoords(double lat, double lon) {
//		Noeud newNode=new Noeud();
//		for(Noeud node: listeNodeXML){			
//			if(node.getLat()==lat && node.getLon()==lon){
//				newNode=node;			
//			}
//			break;				
//		}
//		return newNode;
//	}
//
//
//	/**
//	 * @return a list of node
//	 */
//	public List<Noeud> getNodeByUID(double uid) {
//		List<Noeud> nodes=new ArrayList<Noeud>();
//		for(Noeud node: listeNodeXML){			
//			if(node.getUid()==uid){
//				nodes.add(node);		
//			}
//					
//		}
//		return nodes;
//	}
//
//
//	/**
//	 * @return a list of segment
//	 */
//	public List<Segment> getSegmentByUID(double uid) {
//		List<Segment> segments=new ArrayList<Segment>();
//		for(Segment seg: listeSegmentXML){			
//			if(seg.getUid()==uid){
//				segments.add(seg);		
//			}
//					
//		}
//		return segments;
//	}
//	
//	
//
//	/**
//	 * @return the listeNodeXML
//	 */
//	public List<Noeud> getListeNodeXML() {
//		return listeNodeXML;
//	}
//
//	/**
//	 * @param listeNodeXML the listeNodeXML to set
//	 */
//	public void setListeNodeXML(List<Noeud> listeNodeXML) {
//		this.listeNodeXML = listeNodeXML;
//	}
//
//	/**
//	 * @return the listeSegmentXML
//	 */
//	public List<Segment> getListeSegmentXML() {
//		return listeSegmentXML;
//	}
//
//	/**
//	 * @param listeSegmentXML the listeSegmentXML to set
//	 */
//	public void setListeSegmentXML(List<Segment> listeSegmentXML) {
//		this.listeSegmentXML = listeSegmentXML;
//	}
//
//	
//	/**
//	 * Load the file 
//	 */
//	public void load(File fichier,ConfigXML config) {
//		SAXParserFactory saxFactory=SAXParserFactory.newInstance();
//		try {
//			SAXParser parser=saxFactory.newSAXParser();			
//			File file=fichier;
//			parser.parse(file, config);
//			Log.d("FILE", "Read XML");
//		} catch (ParserConfigurationException e) {
//			e.printStackTrace();
//		} catch (SAXException e) {
//			e.printStackTrace();
//		} catch (IOException e) {
//			Log.d("FILE", " NOT found");
//			e.printStackTrace();
//		}
//		
//	}
//
//	@Override
//	public int countData() {		
//		return listeNodeXML.size()+listeSegmentXML.size();
//	}
//
//	@Override
//	public Bounds getBounds() {		
//		return this.bounds;
//	}
//	
//	
//	
//}
